package com.service.healthycode.dao;

import com.service.healthycode.entity.TouchInfo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author: hjl
 * @date: 2022/04/14 11:10
 * @description:
 */
public interface TouchUserDao {
    void addTouchUserList(@Param("touchInfos") List<TouchInfo> touchInfos);

    void delTouchUserByDangerId(String dangerId);

    void updateTouchUserStatusByDangerId(@Param("id") String id,@Param("status") Integer status);

    List<TouchInfo> queryByMac(String mac);

    List<TouchInfo> queryAllDangerUser();

    List<TouchInfo> queryIncrementOfToday();

    TouchInfo queryTouchUserById(String id);

    void update(TouchInfo touchInfo);

    /**
     * 查询管理员录入终端的下一层接触终端列表
     * @param id 管理员录入的终端的id
     */
    List<TouchInfo>  queryNextLevelByRoot(String id);

    /**
     * 查询普通被感染的终端的下一层终端列表
     * @param id 该终端id
     * @return 接触列表信息
     */
    List<TouchInfo> queryNextLevelByGeneral(String id);

    /**
     * 查看上一级感染终端
     * @param ids 终端id
     * @return 结果集
     */
    List<TouchInfo> queryAboveLevel(@Param("ids") List<String> ids);

    /**
     * 通过id集合查询touch_info中的终端
     * @param ids
     * @return
     */
    List<TouchInfo> queryTouchByIds(@Param("ids") List<String> ids);

    /**
     * 通过dangerIds查询下一层的touch表终端信息
     * @param ids
     * @return
     */
    List<TouchInfo> queryNextByDangerIds(@Param("ids") List<String> ids);

    /**
     * 通过id集合查询所有下一层touch信息
     * @param ids
     * @return
     */
    List<TouchInfo> queryNextByTouchIds(@Param("ids") List<String> ids);

    /**
     * 通过终端id查询该终端下所有的终端
     * @param id
     * @return
     */
    List<TouchInfo> queryNextByTerminalId(String id);

    /**
     * 批量修改ids的状态
     * @param ids 终端id
     * @param adminId 管理员id
     * @param status 状态
     */
    void updateStatusBatch(@Param("ids") List<String> ids,@Param("adminId") String adminId,@Param("status") int status);

    /**
     * 修改id终端的下一层所有终端状态
     * @param terminalId 当前终端id
     * @param adminId 管理员id
     * @param status 状态
     */
    void updateNextStatusById(@Param("terminalId") String terminalId,@Param("adminId") String adminId,@Param("status") int status);

    /**
     * 删除无风险终端
     */
    void delByStatus();

    /**
     * 通过终端mac修改终端状态
     * @param touchInfo
     */
    void updateStatusByTerminalMac(TouchInfo touchInfo);

}
